#include <REGX52.H>

/**
 * @brief   定时器0，1毫秒@11.0592MHz
 * @details
 * @param
 * @retval
 */
void Timer0_Init()
{
    TMOD &= 0xF0; // 设置定时器模式
    TMOD |= 0x01; // 设置定时器模式
    TL0 = 0x66;   // 设置定时初始值
    TH0 = 0xFC;   // 设置定时初始值
    TF0 = 0;      // 清除TF0标志
    TR0 = 1;      // 定时器0开始计时
    EA  = 1;
    // ET0 = 1;				//使能定时器0中断
}

/**
 * @brief 设置定时器0计数值
 * @param counter 计数值
 */
void Timer0_SetCounter(unsigned int counter)
{
    TL0 = counter & 0xFF;
    TH0 = counter >> 8;
}

/**
 * @brief 获取定时器0计数值
 * @return 定时器0计数值
 */
unsigned int Timer0_GetCounter()
{
    return (TL0 | (TH0 << 8));
}

/**
 * @brief 使能定时器0
 * @param enable 使能标志，1：使能，0：禁止
 */
void Timer0_Enable(unsigned char enable)
{
    TR0 = enable;
}

// Template
/*
void Timer0_Isr(void) interrupt 1
{
    static unsigned int timer0Counter = 0;
    timer0Counter++;
    TL0 = 0x66;
    TH0 = 0xFC;

    if (timer0Counter >= 1000) {	// 1000ms
        timer0Counter = 0;
        // TODO
    }
}
*/
